Systems and methods for creating software from library and custom components

ABSTRACT

Methods and systems are disclosed that automate and institutionalize many aspects of the process of creating software. Embodiments automate aspects of pricing, software creation, and delivery using a manufacturing-styled approach to development that reuses existing code and other existing software design features.

CROSS-REFERENCE TO RELATED APPLICATIONS

This patent application is a continuation of U.S. application Ser. No.16/854,805, filed Apr. 21, 2020, which is a continuation of U.S.application Ser. No. 15/786,431, filed Oct. 17, 2017, now U.S. Pat. No.10,649,741. which claims the benefit of U.S. Provisional PatentApplication No. 62/408,935, entitled “SYSTEMS AND METHODS FOR CREATINGSOFTWARE FROM LIBRARY AND CUSTOM COMPONENTS,” filed on Oct. 17, 2016,each of which are incorporated by reference along with all otherreferences cited in this application.

TECHNICAL FIELD

The claimed subject matter relates to the field of software, and moreparticularly to the creation of software from library components andcustom components.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 shows a simplified block diagram of an embodiment of a system forcreating software;

FIG. 2 shows a more detailed diagram of an example of a computing devicefrom a system for creating software;

FIG. 3 is a simplified block diagram of an embodiment of a system forcreating software;

FIG. 4 is a diagram showing a block diagram of aspects of systemarchitecture of an embodiment for creating software, i.e., decisiontriggers and user flow, and a block diagram illustrating back endcomponents of an embodiment for creating software;

FIGS. 5-10 describe and illustrate aspects of the problem and thesolution to the problem provided by embodiments of the systems andmethods;

FIGS. 11-12 describe and illustrate aspects of how the user acquiresaccess to embodiments and aspects of the value provided by embodimentsof the systems and methods;

FIG. 13 is a block diagram illustrating an overview of an embodiment forcreating software;

FIG. 14 is a block diagram illustrating a project scope and pricingprocess of an embodiment for creating software;

FIG. 15 is a block diagram illustrating a code selection and integrationprocess of an embodiment for creating software;

FIG. 16 is a block diagram illustrating a project development process ofan embodiment for creating software;

FIG. 17 is a block diagram illustrating a customer relationship andmanagement process of an embodiment for creating software;

FIGS. 18-37 describe and illustrate a user experience and flow usingscreenshots from a user interface of an embodiment for creatingsoftware; and

FIGS. 38-43 describe and illustrate an administrative user interface andflow using screenshots of an embodiment for creating software.

DETAILED DESCRIPTION

FIG. 1 is a simplified block diagram of a distributed computer network100 incorporating an embodiment of the present invention. Computernetwork 100 includes a number of client systems 105, 110, and 115, and aserver system 120 coupled to a communication network 125 via a pluralityof communication links 130. Communication network 125 provides amechanism for allowing the various components of distributed network 100to communicate and exchange information with each other.

Communication network 125 may itself be comprised of many interconnectedcomputer systems and communication links. Communication links 130 may behardwire links, optical links, satellite or other wirelesscommunications links, wave propagation links, or any other mechanismsfor communication of information. Various communication protocols may beused to facilitate communication between the various systems shown inFIG. 1. These communication protocols may include TCP/IP, HTTPprotocols, wireless application protocol (WAP), vendor-specificprotocols, customized protocols, and others. While in one embodiment,communication network 125 is the Internet, in other embodiments,communication network 125 may be any suitable communication networkincluding a local area network (LAN), a wide area network (WAN), awireless network, a intranet, a private network, a public network, aswitched network, Internet telephony. IP telephony, digital voice, voiceover broadband (VoBB), broadband telephony, Voice over IP (VoIP), publicswitched telephone network (PSTN), and combinations of these, and thelike.

System 100 in FIG. 1 is merely illustrative of an embodiment and doesnot limit the scope of the systems and methods as recited in the claims.One of ordinary skill in the art would recognize other variations,modifications, and alternatives. For example, more than one serversystem 120 may be connected to communication network 125. As anotherexample, a number of client systems 105, 110, and 115 may be coupled tocommunication network 125 via an access provider (not shown) or via someother server system. An instance of a server system 120 and a computingdevice 105 may be part of the same or a different hardware system. Aninstance of a server system 120 may be operated by a provider differentfrom an organization operating an embodiment of a system for specifyingan object in a design, or may be operated by the same organizationoperating an embodiment of a system for specifying an object in adesign.

Client systems 105, 110, and 115 typically request information from aserver system which provides the information. Server systems bydefinition typically have more computing and storage capacity thanclient systems. However, a particular computer system may act as both aclient and a server depending on whether the computer system isrequesting or providing information. Aspects of the system may beembodied using a client-server environment or a cloud-cloud computingenvironment.

Server 120 is responsible for receiving information requests from clientsystems 105, 110, and 115, performing processing required to satisfy therequests, and for forwarding the results corresponding to the requestsback to the requesting client system. The processing required to satisfythe request may be performed by server system 120 or may alternativelybe delegated to other servers connected to communication network 125.

Client systems 105, 110, and 115 enable users to access and queryinformation or applications stored by server system 120. Some exampleclient systems include portable electronic devices (e.g., mobilecommunication devices) such as the Apple iPhone®, the Apple iPad®, thePalm Pre™, or any device running the Apple iOS™, Android™ OS, GoogleChrome OS, Symbian OS®, Windows Mobile® OS, Palm OS® or Palm Web OS™. Ina specific embodiment, a “web browser” application executing on a clientsystem enables users to select, access, retrieve, or query informationand/or applications stored by server system 120. Examples of webbrowsers include the Android browser provided by Google, the Safari®browser provided by Apple, the Opera Web browser provided by OperaSoftware, the BlackBerry® browser provided by Research In Motion, theInternet Explorer® and Internet Explorer Mobile browsers provided byMicrosoft Corporation, the Firefox® and Firefox for Mobile browsersprovided by Mozilla®, and others.

FIG. 2 shows an exemplary computer system such as a client system of thepresent invention. In an embodiment, a user interfaces with the systemthrough a client system, such as shown in FIG. 2. Mobile clientcommunication or portable electronic device 200 includes a display,screen, or monitor 205, housing 210, and input device 215. Housing 210houses familiar computer components, some of which are not shown, suchas a processor 220, memory 225, battery 230, speaker, transceiver,antenna 235, microphone, ports, jacks, connectors, camera, input/output(I/O) controller, display adapter, network interface, mass storagedevices 240, and the like. Computer system 200 may include a bus orother communication mechanism for communicating information betweencomponents. Mass storage devices 240 may store a user application andsystem software components. Memory 225 may store information andinstructions to be executed by processor 220.

Input device 215 may also include a touchscreen (e.g., resistive,surface acoustic wave, capacitive sensing, infrared, optical imaging,dispersive signal, or acoustic pulse recognition), keyboard (e.g.,electronic keyboard or physical keyboard), buttons, switches, stylus,gestural interface (contact or non-contact gestures), biometric inputsensors, or combinations of these.

Mass storage devices 240 may include flash and other nonvolatilesolid-state storage or solid-state drive (SSD), such as a flash drive,flash memory, or USB flash drive. Other examples of mass storage includemass disk drives, floppy disks, magnetic disks, optical disks,magneto-optical disks, fixed disks, hard disks, CD-ROMs, recordable CDs,DVDs, recordable DVDs (e.g., DVD-R, DVD+R, DVD-RW, DVD+RW, HD-DVD, orBlu-ray Disc), battery-backed-up volatile memory, tape storage, reader,and other similar media, and combinations of these.

System 100 may also be used with computer systems having differentconfigurations, e.g., with additional or fewer subsystems. For example,a computer system could include more than one processor (i.e., amultiprocessor system, which may permit parallel processing ofinformation) or a system may include a cache memory. The computer systemshown in FIG. 2 is but an example of a computer system suitable for use.Other configurations of subsystems suitable for use will be readilyapparent to one of ordinary skill in the art. For example, in a specificimplementation, the computing device is mobile communication device suchas a smartphone or tablet computer. Some specific examples ofsmartphones include the Droid Incredible and Google Nexus One®, providedby HTC Corporation, the iPhone® or iPad®, both provided by Apple,BlackBerry Z10 provided by BlackBerry (formerly Research In Motion), andmany others. The computing device may be a laptop or a netbook. Inanother specific implementation, the computing device is a non-portablecomputing device such as a desktop computer or workstation.

A computer-implemented or computer-executable version of the programinstructions useful to practice the present invention may be embodiedusing, stored on, or associated with computer-readable medium. Acomputer-readable medium may include any medium that participates inproviding instructions to one or more processors for execution. Such amedium may take many forms including, but not limited to, nonvolatile,volatile, and transmission media. Nonvolatile media includes, forexample, flash memory, or optical or magnetic disks. Volatile mediaincludes static or dynamic memory, such as cache memory or RAM.Transmission media includes coaxial cables, copper wire, fiber opticlines, and wires arranged in a bus. Transmission media can also take theform of electromagnetic, radio frequency, acoustic, or light waves, suchas those generated during radio wave and infrared data communications.

For example, a binary, machine-executable version, of the softwareuseful to practice the present invention may be stored or reside in RAMor cache memory, or on mass storage device 240. The source code of thissoftware may also be stored or reside on mass storage device 240 (e.g.,flash drive, hard disk, magnetic disk, tape, or CD-ROM). As a furtherexample, code useful for practicing the invention may be transmitted viawires, radio waves, or through a network such as the Internet. Inanother specific embodiment, a computer program product including avariety of software program code to implement features of the inventionis provided.

Computer software products may be written in any of various suitableprogramming languages, such as C, C++, C#, Pascal, Fortran, Perl, Matlab(from MathWorks, www.mathworks.com), SAS, SPSS, JavaScript,CoffeeScript, Objective-C, Objective-J, Ruby, Python, Erlang, Lisp,Scala, Clojure, and Java. The computer software product may be anindependent application with data input and data display modules.Alternatively, the computer software products may be classes that may beinstantiated as distributed objects. The computer software products mayalso be component software such as Java Beans (from Oracle) orEnterprise Java Beans (EJB from Oracle).

An operating system for the system may be the Android operating system,iPhone OS (i.e., iOS), Symbian, BlackBerry OS, Palm web OS, bada, MeeGo,Maemo, Limo, or Brew OS. Other examples of operating systems include oneof the Microsoft Windows family of operating systems (e.g., Windows 95,98, Me, Windows NT, Windows 2000, Windows XP, Windows XP x64 Edition,Windows Vista, Windows 7, Windows CE, Windows Mobile, Windows Phone 7),Linux, HP-UX, UNIX, Sun OS, Solaris, Mac OS X, Alpha OS, AIX, IRIX32, orIRIX64. Other operating systems may be used.

Furthermore, the computer may be connected to a network and mayinterface to other computers using this network. The network may be anintranet, internet, or the Internet, among others. The network may be awired network (e.g., using copper), telephone network, packet network,an optical network (e.g., using optical fiber), or a wireless network,or any combination of these. For example, data and other information maybe passed between the computer and components (or steps) of a systemuseful in practicing the invention using a wireless network employing aprotocol such as Wi-Fi (IEEE standards 802.11, 802.11a, 802.11b,802.11e, 802.11g, 802.11i, and 802.11n, just to name a few examples).For example, signals from a computer may be transferred, at least inpart, wirelessly to components or other computers.

FIG. 3 is a simplified block diagram of an embodiment of a system 300for creating software for use by a user 301. System 300 includes one ormore user computing devices 305, and a server 320, coupled to acommunication network 325 via a plurality of communication links 330.Computing device 305 may be used to run a user application 310 forcreating software from existing code and new code. User application 310may use computing device 305 and network 325 to access server 320.Communication network 325 (or “network 325”) provides a mechanism forallowing the various components of system 300 to communicate andexchange information with each other via communication links 330. Server320 may include or have access to a database 340 of code libraries 342a, 342 b, . . . , 342 n. Each code library includes software code (notshown) from which system 300 may select to create customized software.Each code library 342 a, 342 b, . . . , 342 n may have selected from ita subset of code sections 345 a, 345 b, . . . , 345 n, which server 320may assemble into customized software 350 a, 350 b, . . . , 350 n andprovide to user 301 via computing device 305. Customized software may becomplete or may need to be augmented with additional custom codesections that may be newly created by partner developers. Server 320 oran administrator may combine or integrate newly created code withexisting code sections to create customized software.

Computing device 305 may run a software-creating component 315 which maybe provided with a subset of code sections (e.g., subset 345 a fromserver 320 via user application 310) that software-creating component315 (like server 320) may assemble into customized software (e.g.,customized software 350 a).

Network 325 may be any suitable communications network. Communicationnetwork 325 may itself be comprised of many interconnected computersystems and communication links. As an example and not by way oflimitation, one or more portions of network 325 may include an ad hocnetwork, an intranet, an extranet, a virtual private network (VPN), alocal area network (LAN), a wireless LAN (WLAN), a wide area network(WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), aportion of the Internet, a portion of the Public Switched TelephoneNetwork (PSTN), a cellular telephone network, another suitable network,or a combination of two or more of these. Network 325 may include one ormore networks 325.

Connections 330 may connect computing device 305 and server 320 tocommunication network 325 or to each other. Communication links 330 maybe hardwire links, optical links, satellite or other wirelesscommunications links, wave propagation links, or any other mechanismsfor communication of information. This disclosure contemplates anysuitable connections 325. In particular embodiments, one or moreconnections 325 include one or more wireline (such as for exampleDigital Subscriber Line (DSL) or Data Over Cable Service InterfaceSpecification (DOCSIS)), wireless (such as for example Wi-Fi orWorldwide Interoperability for Microwave Access (WiMAX)) or optical(such as for example Synchronous Optical Network (SONET) or SynchronousDigital Hierarchy (SDH)) connections. In particular embodiments, one ormore connections 330 each include an ad hoc network, an intranet, anextranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, a portion of theInternet, a portion of the PSTN, a cellular telephone network, anothersuitable connection 330, or a combination of two or more suchconnections 330. Connections 330 need not necessarily be the samethroughout system 300. One or more first connections 330 may differ inone or more respects from one or more second connections 330.

Server 320 may be a network-addressable computing system that can hostone or more product databases 340. Server 320 may be responsible forreceiving information requests from computing device 305 via userapplication 310, for performing the processing required to satisfy therequests, for generating responses (e.g., custom software 350 a, . . . ,350 n) to received inquiries, and for forwarding the resultscorresponding to the requests back to requesting computing device 305.Server 320 may store, receive, or transmit data and software, andinformation associated with the data and software (including user data).The processing required to satisfy the requests may be performed byserver 320 or may alternatively be delegated to other servers connectedto communication network 325. For example, other servers may hostdatabase 340, or have additional databases. Server 320 may be anintermediary in communications between a computing device 305 andanother server system, or a computing device 305 may communicatedirectly with another server system. Server 320 may be accessed by theother components of system 300, for example, directly or via network325. In particular embodiments, one or more users 301 may use one ormore computer devices 305 to access, send data to, and receive data fromserver 320.

Computing device 305, connections 330, and network 325, enable user 301to access and query information stored and applications run by server320, such as database 340. Some example computer devices 305 includedesktop computers, portable electronic devices (e.g., mobilecommunication devices, smartphones, tablet computers, laptops) such asthe Samsung Galaxy Tab®, Google Nexus devices, Amazon Kindle®, KindleFire®, Apple iPhone®, the Apple iPad®, Microsoft Surface®, the PalmPre™, or any device running the Apple iOS®, Android® OS, Google Chrome®OS, Symbian OS®, Windows Mobile® OS, Windows Phone, BlackBerry® OS,Embedded Linux, Tizen, Sailfish, webOS, Palm OS® or Palm Web OS®.

In an embodiment, user application 310 may be run or executed by adifferent system. For example, computing device 305, or server 320, orboth, may run user application 310. That is, user application 310 may berun by computing device 305, or the application may be run on server 320and accessed by computing device 305 through a browser and network 325.For example, computing device 305 could be operated as a terminal, withuser application 310 being run on a server, e.g., server 320. In anembodiment, aspects or functionalities of user application 310 are runby server 320, or another computing system or server. In an embodiment,the steps of the methods described herein may be performed, at least inpart, in cloud-computing environment.

FIG. 3 illustrates a particular arrangement of user 301, computingdevice 305, and server 320, but this is an example arrangement. Anyother suitable arrangement of user 301, computing device 305, server320, and network 325 may be used. For example, computing device 305 maybe connected directly to server 320. Also, computing device 305 andserver 320 may appear to be distinct yet operate on the same hardware.In addition, any number of users 301, clients 305, and server 320 may beused in embodiments.

FIG. 4 is a diagram showing block diagrams of system architecture of anembodiment for creating software.

In an embodiment, a method for creating software is called“Engineer.ai.”

Why was Engineer.ai created? Engineer.ai was created to allow for thebuilding of digital products at least 30% faster and for 30% less thananyone else in the industry, all while guaranteeing top quality.

What is it and how does it work? Engineer.ai is an “as-a-service”platform for software outsourcing, turning App Development/SoftwareOutsourcing into something as simple as a restaurant menu that you canpick a-la carte. This includes an On-Demand & Online Price Calculatorfor building any digital product from a Wearable to a Marketplace to anApp with price guarantees, and intelligent automation/machine assistancethat reduces the average cost and time of any project by at least30%-40%. Engineer.ai offers a transparent fixed price upfront. Nosurprises and any amount over your fixed price is waived.

How does the service/product work? Engineer.ai provides an intuitive andeasy-to-use wizard for pricing any idea in less than 60 seconds withpre-set options made available based on the project type. The fixedprice you get is offered immediately and upfront. You don't need to waitor speak to a salesperson to know exactly what your project will costand how long it will take to deliver.

How is my project managed? Engineer.ai provides weekly updates so youalways know the exact status of your project. Engineer.ai practices goldstandard for coding so quality is never sacrificed. Engineer.ai offers aweekly subscription and billing model so you are never locked in and canpause, speed up, or walk away at anytime.

Engineer.ai Benefits

-   1) Build your idea for 30% less and 30% faster than your    competitors.-   2) Use our easy-to-use wizard for pricing any idea in less than 60    seconds.-   3) Get transparent and fixed pricing for your project upfront and    instantaneously without speaking to a sales rep.-   4) Have the confidence your project will be delivered on time and    will not go over budget.-   5) If you are not sure what you want, use our wizard to build out    your idea by choosing from a bundle of pre-set options.

Engineer.ai Description

Engineer.ai uses machines to automate and institutionalize as much ofthe software outsourcing process as possible. Engineer.ai includestransparent pricing, standardized delivery, and a manufacturing-styledapproach to development that reuses an estimated 50% of code and designthat is often standardized and duplicated across many apps and digitalplatforms.

A key part of our business model is how Engineer.ai actually scales andbuilds. Engineer.ai scales by using 3rd party dev shops/contractors andhaving them deliver under the Engineer.ai brand, and Engineer.ai usescode libraries. Similarly Engineer.ai lets Software Companies getpredictable revenue, a framework that lets them get paid and a way forthem to access our rich code libraries & SIMBA Platform (Simple,Integrated, Machine-Based, Architecture Platform). Engineer.ai alsoscales by the institutionalization of the Engineer.ai code anddevelopment process.

SIMBA connects the entire product delivery process together. Itintegrates on-boarding, pricing, engineering and product/projectmanagement using machine-learning processing and A.I. (“artificialintelligence”) to keep constant conversation with the customer. Aspectsof SIMBA include:

-   -   A “Pick-n-mix” wizard for pricing any idea.    -   A weekly subscription with max price guarantee.    -   A learning algorithm for real-time pricing.    -   A machine-created templates from code library for efficient &        consistent delivery.    -   And an automated project and progress reports to ensure that        customers have transparency in pricing, financial control, and        automation

Engineer.ai is the first service to unify Development Shops around theworld:

-   -   First published pricing platform that lets your price an app or        an idea within 30 seconds online.    -   First process-driven and machine-led manufacturing approach for        building software in a “just-in-time” model.    -   First use of machine-learning and Artificial Intelligence in        machines and BOTs (software applications that run automated        tasks (scripts) over the Internet) to automate the product        delivery process.    -   For areas Engineer.ai feels need more “business interest,”        Engineer.ai may subsidize the development, such as efforts with        content-led marketplaces; Engineer.ai can effectively invest in        customers by simply offsetting some of its fees.

Role of SIMBA in Engineering.ai:

-   -   Automated Pricing    -   Machine-assisted product management    -   Code creation

Engineer.ai—Features

-   1) Project selector    -   a) Category selection        -   i) Current categories        -   ii) Option for more categories        -   iii) Metrics to track selection and % completion    -   b) Template type    -   c) Other project description (outside selector parameters)    -   d) Platforms    -   e) Feature preview    -   f) Portfolio examples    -   g) Team location    -   h) Dev speed (time to market)    -   i) Build fidelity-   2) Pricing estimate    -   a) Real time projected cost based on project guidelines created        in the selector-   3) Customer contact capture & confirmation    -   a) Project review (can user adjust here?)    -   b) Customer contact collected    -   c) Saved confirmation of submission via email

Engineer.ai—Additional Features

-   1) Project estimator additional features    -   a) Wireframe database    -   b) Intelligence re: additional categories & dataset    -   c) Mobile & touch friendly    -   d) Workflow for customer/sales interaction    -   e) In an embodiment, the method makes a decision based on        historical variance. For example, if there is some customization        required for a particular type of app, and if the type of app        shows a historical cost variation, the method adjusts the        potential customization cost based on the historical variation.-   2) Payment & contract execution    -   a) Proposal automation        -   i) Proposal based on integration (the degree and depth of            integration)    -   b) Billed deposit and weekly, monthly invoice    -   c) Pay from invoice-   3) Design    -   a) Goal to assign to the right designer    -   b) Preview based on component elements & wireframes    -   c) Map to design library    -   d) 2-3 week iteration with customer (details?)-   4) Project team assignment    -   a) Semi-automated    -   b) Track team member status & availability projection-   5) Component user story generation    -   a) Board creation    -   b) Database of tagged stories    -   c) Feature based story selection-   6) Base code generation    -   a) Code pods    -   b) Feature based pod selection-   7) Sprint estimator    -   a) Feature/team/speed based estimation of completion    -   b) Automated notifications of progress, potential deadline        extensions, and sprint completions

Engineer.ai—Partner Development Qualification Process

-   1) Sources    -   a) Inbound        -   i) Website    -   b) Outbound    -   c) Referral-   2) Pre-qualification    -   a) Minimum team requirements    -   b) Ideal candidate profile—measure fill rate success/skills,        experience, etc    -   c) Team profiling tool        -   i) Team members        -   ii) Skills (dev lang, years experience, code committed)        -   iii) Projects (associated projects)-   3) Project review    -   a) Minimum project examples—Live products ideal    -   b) Customer testimonials-   4) Code review    -   a) Standardized code submission    -   b) Submission, automated and manual review, and workflow process

TABLE 1 gives a description of pages from a website employingembodiments of a method for creating software from library and customcomponents. In TABLE 1, a particular webpage is identified by thecolumns: ID, Title, and Labels. A Description column includes adescription of the particular webpage and its function.

ID TITLE LABELS DESCRIPTION 129382929 Product homepage As a user when Inavigate to Engineer.ai’s URL, I Homepage/ will be navigated to landingpage of Engineer.ai. Landing The Landing page will present 5 Main Cardoptions Page to choose from. 1. Mobile App 2. Blog/Website 3.MarketPlace 4. Wearables 5. Others **Note:** The entire text on cardslike title, description etc. along with icons is **not hardcoded** andis available through backend. Please ignore text on all cards in thedesign references. See, e.g., the screenshot on FIG. 18 for designreference. 129383567 Homepage | homepage As a user, when I hover on thecards on the landing Card Hover page, then the Main card will move upand State an overlay card will reveal options related to the main card.I should also see two buttons-**Start** and **Know More**. **Note:** Theentire text on cards like title, description etc. along with icons is**not hardcoded** and is available through backend. Please ignore texton all cards in the design references. See, e.g., the screenshot on FIG.19 for design reference. 129446881 Homepage | homepage As a user, when Iclick on *Know more* button after Card Hover hovering on a card, thereshould be another overlay State | Know over the same card revealing thefull feature set that More are applicable for card being hovered upon.The feature set list can be longer than the display area and thus needsto be horizontally scrollable. A start button will also appear below thefeature list. I can click on *Start* button and should be able to followstory #129446683 There will be another button under start by the name of*Portfolio Projects*. Clicking on it will work as described in story#129447399 **Note:** The entire text on cards like title, descriptionetc. along with icons is **not hardcoded** and is available throughbackend. Please ignore text on all cards in the design references. See,e.g., the screenshot on FIG. 20 for design reference. 129440667Personalize personalize As a user, when I am navigated to this screenthrough Product | product the workflow defined in story #129521135, Ishould Select Platform see the first section to select the platforms Ineed to support in my Product. This is the first step towardspersonalization of my product. Below the applicable platforms list, Ishould be able to see the number of screens anticipated in my product. A**Next** button appears below, clicking on which I should be able tofollow story #129514959. This button gets enabled only when I have oneor more options from all required fields selected in this section.**Note:** The entire text on cards like title, description etc. alongwith icons is **not hardcoded** and is available through backend. Pleaseignore text on all cards in the design references. See, e.g., thescreenshot on FIG. 27 for design reference. 129515019 Personalizepersonalize As a user, when I am navigated to this screen throughProduct | Select product the workflow defined in story #129514959 (onclick Delivery Speed on next), the third section overlay should come totop. This will allow me to select the team I want to use to develop myproduct and is the third step towards personalization of my product. Aback button will appear below to the header clicking on which I will benavigated to Select Features story (#129514959) A **Next** buttonappears below, clicking on which I should be able to follow story#129515169. This button gets enabled only when I have one or moreoptions from all required fields selected in this section. **Note:** Theentire text on cards like title, description etc. along with icons is**not hardcoded** and is available through backend. Please ignore texton all cards in the design references. See, e.g., the screenshot on FIG.28 for design reference. 129515169 Personalize personalize As a user,when I am navigated to this screen through Product | Select product theworkflow defined in story #129515019 (on click Delivery Speed on next),the third section overlay should come to top. This will allow me toselect the speed of delivery for my product and is the fourth steptowards personalization of my product. A back button will appear belowto the header clicking on which I will be navigated to Select Featuresstory (#129515019) A **Next** button appears below, clicking on which Ishould be able to follow story #129522065. This button gets enabled onlywhen I have one or more options from all required fields selected inthis section. **Note:** The entire text on cards like title, descriptionetc. along with icons is **not hardcoded** and is available throughbackend. Please ignore text on all cards in the design references. See,e.g., the screenshot on FIG. 30 for design reference. 129514959Personalize personalize As a user, when I am navigated to this screenthrough Product | Select product the workflow defined in story#129440667 (on click Features on next), the second section overlayshould come to top. This will allow me to select the features I need toinclude in my Product and is the second step towards personalization ofmy product. A **Back Button** will appear below to the header clickingon which I will be navigated to Select Platform & Pages story(#129440667) A **Next** button appears below, clicking on which I shouldbe able to follow story #129515019. This button gets enabled only when Ihave one or more options from all required fields selected in thissection. **Note:** The entire text on cards like title, description etc.along with icons is **not hardcoded** and is available through backend.Please ignore text on all cards in the design references. See, e.g., thescreenshot on FIG. 36 for design reference. 129446683 Product Typehomepage, As a user, when I click on *Start* button from hover LandingPage product state or additional card overlays, I should be navigated(Start from type to a separate page which will show cards based any cardon on the card selected on homepage. Homepage) Additionally, if I clickon header section of this card, the same workflow should be followed.**Note:** The entire text on cards like title, description etc. alongwith icons is **not hardcoded** and is available through backend. Pleaseignore text on all cards in the design references. See, e.g., thescreenshot on FIG. 35 for design reference. 129514073 Product product Asa user, when I hover on a card in Product Type page, Type Page | typethe card should show the list of platforms that are Card Hoverapplicable for that product type. State A *Know more* button will alsoappear below the applicable platforms list. I can click on this buttonand should be able to follow story #129514203 On clicking the header ofthis card, I should be able to follow story #129514387 **Note:** Theentire text on cards like title, description etc. along with icons is**not hardcoded** and is available through backend. Please ignore texton all cards in the design references. See, e.g., the screenshot on FIG.26 for design reference. 129522743 Personalize personalize As a user,when I am navigated to this screen through Product | product theworkflow defined in story #129522065 (on click Your Build on next), thebuild card should appear. This screen Card shows your selections through4 cards as showcased in the design reference. It should display thefollowing 4 cards in the given order: Product Type with descriptionPlatform, Screens and Features list Team and Speed Development Phasesand Estimate A **Get in Touch** button appears inside the 4th card,clicking on which I should be able to follow story #129522917. **Note:**The entire text on cards like title, description etc. along with iconsis **not hardcoded** and is available through backend, unless statedotherwise. Please ignore text on all cards in the design references.See, e.g., the screenshot on FIG. 33 for design reference. 129522065Personalize personalize As a user, when I am navigated to this screenthrough Product | product the workflow defined in story #129515169 (onclick Select Project on next), the phase selection screen should appear.It Phases is the final step towards personalization of my product andproduct development lifecycle. It should display the following 4 phases:Design Prototype MVP Full Build By default all the 4 phases will beselected. As a user, I should also be able to unselect the seclectedcard(s) as many times and vice-versa. The estimate in header shouldupdate instantly based on the selections I am making. A **Next** buttonappears below, clicking on which I should be able to follow story#129522743. This button gets enabled only when I have one or moreoptions from all required fields selected in this section. **Note:** Theentire text on cards like title, description etc. along with icons is**not hardcoded** and is available through backend, unless statedotherwise. Please ignore text on all cards in the design references.See, e.g., the screenshot on FIG. 32 for design reference. 129514203Product Type product As a user, when I click on *Next* button on hoveredcard Page | Card type in Products page, I should be able to see thefeatures I Hover State | can request for. The card overlay that openedin Know More previous view moves a bit up to accommodate the list. Ifthe list requires more space than available in the display area, thelist should be horizontally paginated. A **Next** button will alsoappear below the applicable features list. I can click on this buttonand should be able to follow story **Note:** The entire text on cardslike title, description etc. along with icons is **not hardcoded** andis available through backend. Please ignore text on all cards in thedesign references. See, e.g., the screenshot on FIG. 20 for designreference. 129757983 Adding in Depending on what the user selects, theprice should pricing component constantly be updating in the top-rightsection of the navbar 129521135 Create the personalize As a user, when Iam navigated to this screen through Personalize product the workflowdefined in story #129514387, I should Product Page see a card that has 4dynamic sections stacked over one another. These sections (in definedorder) are Select Platforms *(Hard Coded Label)* Select Features *(HardCoded Label)* Select Team *(Hard Coded Label)* Select Speed *(Hard CodedLabel)* Initially, only the first section will be enabled and rest willbe disabled. As and when I keep selecting options in each section, thenext section in stack gets enabled. I can also navigate directly betweenall the enabled sections directly by clicking them. The selectedsections comes on top while others are visible in the background. Forlinear navigation between enabled sections, I should also be able to usethe Back and Next button in each sections. The first section should nothave a back button. **Note:** The most of the text in sections liketitle, description etc. along with icons is **not hardcoded** and isavailable through backend; unless stated otherwise. See, e.g., thescreenshot on FIG. 27. 129522917 Personalize personalize As a user, whenI am navigated to this screen through the Product | Get product workflowdefined in story #129522743 (on click on in Touch “Get in Touch”button), the Get in Touch screen should Screen appear. This screenshould allow me to enter information in following fields: Project Name(100 Characters) Project Description (150 Characters) My email ID (75Characters) My Name (50 Characters) Below these fields, there should bea checkbox asking me to confirm that I agree to *Terms & Conditions* and*Privacy Policy* I can also request for a *“Non Disclosure Agreement”*through another link below the above checkbox. Lastly, I should be ableto save the details and allow the team to connect with me. I should nowbe navigated to next screen which follows story #129523531. See, e.g.,the screenshot on FIG. 34 for design reference. 129525811 Show andupdate As a user I would like to see a dynamic header in the Headerapplication. This header is visible when I click on Start on any of themain cards on the home screen. The header has 5 sections (Collapsedform) The header has 5 sections (Expanded form) Product Type Product SubType & Its description Platform, Features, Team and Speed Phase EstimateEach section/sub-section will be added to header as and when usernavigates to these pages/sections and makes necessary selections onscreen. Any update in these sections also instantly update the headerwith new information. I can also click on Header to see the expandedview. Please see the below design for reference for collapsed view See,e.g., the screenshot on FIG. 35 for design reference. 129514387 ProductType product As a user, when I click on *Next* button on hovered Page |Add type card in Products page, an overlay will stack over existingproduct overlays and allow me to add a description about the kinddescription of product that I want to build. The description cannot belonger than 50 characters. Alternately, I can reach here by clicking thecard header on *Product Types* pages at any point of time. A *Start*button appear below the text field. I can click on this button andshould be able to follow story #129440667 **Note:** The entire text oncards like title, description etc. along with icons is **not hardcoded**and is available through backend. Please ignore text on all cards in thedesign references. See, e.g., the screenshot on FIG. 37 for designreference. 129523531 Create the personalize As a user, when I amnavigated to this screen through Concierge page product the workflowdefined in story #129522917 (on click on “Get in Touch” button), theConcierge screen should appear. Here, I should be able to post myqueries and add attachments. **Attachment types TBD**. Lastly, I shouldbe able to start an estimation for a new build which redirects me tohomepage. 129447399 Homepage | homepage, As a user, when I click on*Portfolio Projects* button Card Hover skip in know more section of acard on Home page, a new State | Know overlay will appear as showcasedin the design reference. More | Portfolio It should show a list of 4customers and a few testimonials. The testimonials should behorizontally scrollable. A start button will also appear below thefeature list. I can click on *Start* button and should be able to followstory #129446683 **Note:** The entire text on cards like title,description etc. along with icons is **not hardcoded** and is availablethrough backend. Please ignore text on all cards in the designreferences.

In the description above and throughout, numerous specific details areset forth in order to provide a thorough understanding of an embodimentof this disclosure. It will be evident, however, to one of ordinaryskill in the art, that an embodiment may be practiced without thesespecific details. In other instances, well-known structures and devicesare shown in block diagram form to facilitate explanation. Thedescription of the preferred embodiments is not intended to limit thescope of the claims appended hereto. Further, in the methods disclosedherein, various steps are disclosed illustrating some of the functionsof an embodiment. These steps are merely examples, and are not meant tobe limiting in any way. Other steps and functions may be contemplatedwithout departing from this disclosure or the scope of an embodiment.

Systems and methods are described for creating software from library andcustom components. In a method for creating software, a server running asoftware creating component may receive input from a customer, where theinput describes at least one aspect of a software program. Based on theinput, the software creating component may determine existing codecomponents that may be used to create the software program, where theexisting code components are stored in a code library accessible by thesoftware creating component. Based on the user input and based on theexisting code components that may be used to create the softwareprogram, the software creating component may determine new codecomponents that must be developed for the software program. And, basedon the existing code components that may be used and based on the newcode components that must be developed, the software creating componentmay provide, to the user, a cost estimate for the software program.

Different embodiments may provide variations on the basic principlesoutlined above. In an embodiment, the method may further compriseadjusting the cost estimate based on the at least one aspect of thesoftware program. In an embodiment, the at least one aspect of thesoftware program may include at least one of: a platform category, anapplication template, a requirement collection, a platform, a number ofscreens, a feature, a team location, a time to market, and a builddepth. In an embodiment, the build depth may include: a wireframe, adesign, a navigable prototype, a minimal viable product, or a completeproject. In an embodiment, the method may further comprise: sending, bythe software creating program, a set of existing code requirement and aset of new code requirements to a team selector; and generating, by thesoftware creating program, a project template based on the existing codecomponents that may be used and based on the new code components thatmust be developed. In an embodiment, the method may further comprise:generating, by the software creating program, a project schedule basedat least in part on the project template, the project schedule includingevents related to the creation of the software program; and managing, bythe software creating program, the events related to the creation of thesoftware program. In an embodiment, the events related to the creationof the software program may include at least one of: a projectmilestone; a code commit; and a customer message. In an embodiment, themethod may further comprise: passing, by the software creating program,at least one event ID to a communication program; and sending, by thecommunication program, a message to the customer based on the event ID.And in an embodiment, the method may further comprise: receiving, by acommunication program, a message from the customer; and parsing, by thecommunication program, the received message into the software creatingprogram.

What is claimed is:
 1. A method for creating software, comprising:implementing an interactive interface that is configured to provide auser an option to select from a plurality of product type, wherein eachproduct comprises a set of defined features; providing the user with theopportunity to select to remove features from the set of features of theselected product type and to select to add other features; receivinginput from a customer, by a server running a software creatingcomponent, the input describing a desired custom application; providinga code, design, process, and workflow library comprising software codecomponents comprising software code for creating different softwareapplications; determining, by the software creating component based onthe input, which software code components that already exists in thecode library can be used to assemble the desired custom application;determining, by the software creating component based on the user inputand based on the determined existing code components, new software codecomponents that must be created that integrate with the determinedexisting code components to create the desired custom application; andproviding, by the software creating component to the user, a costestimate for the custom software application based on the determinedexisting code components and on the determined new software codecomponents.
 2. The method of claim 1, further comprising displaying onthe interactive interface a wireframe of the custom applicationcomprising the set of features of the selected product type.
 3. Themethod of claim 1, further comprising updating the set of definedfeatures for a product of the plurality of product types based on theselection of features.
 4. The method of claim 1, further comprising:sending, by the software creating program component, a set of existingcode requirements and a set of new code requirements to a team selector,and assigning a team to the custom application.
 5. The method of claim1, further comprising: generating, by the software creating programcomponent, a project schedule including events related to the creationof the custom software application; and managing, by the softwarecreating program component, the events related to the creation of thecustom software application.
 6. A system for creating softwarecomprising: at least one processor; and at least one memory operativelycoupled to the at least one processor, the at least one processorconfigured to acquire computer readable instructions stored in the atleast one memory and execute the instructions comprising instructions tocause the system to: implement an interactive interface that isconfigured to provide a user an option to select from a plurality ofproduct type, wherein each product comprises a set of defined features;provide the user with the opportunity to select to remove features fromthe set of features of the selected product type and to select to addother features; receive input from a customer, by a server running asoftware creating component, the input describing a desired customapplication; provide a code, design, process, and workflow librarycomprising software code components comprising software code forcreating different software applications; determine, by the softwarecreating component based on the input, which software code componentsthat already exists in the code library can be used to assemble thedesired custom application; determine, by the software creatingcomponent based on the user input and based on the determined existingcode components, new software code components that must be created thatintegrate with the determined existing code components to create thedesired custom application; and provide, by the software creatingcomponent to the user, a cost estimate for the custom softwareapplication based on the determined existing code components and on thedetermined new software code components.
 7. The system of claim 6,wherein the instructions further comprise instructions to cause thesystem to display on the interactive interface a wireframe of the customapplication comprising the set of features of the selected product type.8. The system of claim 6, wherein the instructions further compriseinstructions to cause the system to update the set of defined featuresfor a product of the plurality of product types based on the selectionof features.
 9. The system of claim 6, wherein the instructions furthercomprise instructions to cause the system to: send, by the softwarecreating program component, a set of existing code requirements and aset of new code requirements to a team selector, and assign a team tothe custom application.
 10. The system of claim 6, wherein theinstructions further comprise instructions to cause the system to:generate, by the software creating program component, a project scheduleincluding events related to the creation of the custom softwareapplication; and manage, by the software creating program component, theevents related to the creation of the custom software application.
 11. Anon-transitory computer readable medium having instructions executableby a data processing apparatus to: implement an interactive interfacethat is configured to provide a user an option to select from aplurality of product type, wherein each product comprises a set ofdefined features; provide the user with the opportunity to select toremove features from the set of features of the selected product typeand to select to add other features; receive input from a customer, by aserver running a software creating component, the input describing adesired custom application; provide a code, design, process, andworkflow library comprising software code components comprising softwarecode for creating different software applications; determine, by thesoftware creating component based on the input, which software codecomponents that already exists in the code library can be used toassemble the desired custom application; determine, by the softwarecreating component based on the user input and based on the determinedexisting code components, new software code components that must becreated that integrate with the determined existing code components tocreate the desired custom application; and provide, by the softwarecreating component to the user, a cost estimate for the custom softwareapplication based on the determined existing code components and on thedetermined new software code components.
 12. The non-transitory computerreadable medium of claim 10, wherein the instructions are furtherexecutable to display on the interactive interface a wireframe of thecustom application comprising the set of features of the selectedproduct type.
 13. The non-transitory computer readable medium of claim10, wherein the instructions are further executable to update the set ofdefined features for a product of the plurality of product types basedon the selection of features.
 14. The non-transitory computer readablemedium of claim 10, wherein the instructions are further executable to:send, by the software creating program component, a set of existing coderequirements and a set of new code requirements to a team selector, andassign a team to the custom application.
 15. The non-transitory computerreadable medium of claim 10, wherein the instructions are furtherexecutable to: generate, by the software creating program component, aproject schedule including events related to the creation of the customsoftware application; and manage, by the software creating programcomponent, the events related to the creation of the custom softwareapplication.
 16. An integrated, machine-based architecture, softwaredevelopment system that connects a plurality of custom softwaredevelopment processes together comprising: one or more computersconfigured to integrate customer on-boarding, price generation, customcode generation, and project management using automated machineprocesses.
 17. The system of claim 16 wherein the system is configuredto perform a project development process comprising managing projectdelivery using automated actions interacting with the customer and anassigned development team.
 18. The system of claim 16 wherein the systemimplements a plurality of bots comprising software applications that runautomated scripts over the Internet that automate software development.19. The system of claim 16 wherein the system is configured to include aproject management tool that is configured to machine-assist projectscheduling for development of the custom application and implement asoftware development management process.
 20. The system of claim 16wherein the system is configured to include a project builder that isconfigured to pass existing and new code requirements to a team selectorprocess.
 21. The system of claim 16 wherein the system is configured toassign source code from a code library to a new project repository andtriggers code transfer to the new project repository
 22. The system ofclaim 16 wherein the system is configured to match a timing requirementfor creating the desired custom software application to an availabilityof a team member.
 23. An integrated, machine-based architecture,software development system that connects a plurality of custom softwaredevelopment processes together comprising: one or more computersconfigured to integrate customer on-boarding, price generation, customcode generation, and project management using automated machineprocesses, wherein the system is configured to analyze profile of a userand identify, based on the user profile, a set of features for displayto the user via an interactive display, determine code that is availablein a code library and code that needs to be developed, and generates aschedule for the project automatically.
 24. The system of claim 23wherein the system is configured to perform a project developmentprocess comprising managing project delivery using automated actionsinteracting with the customer and an assigned development team.
 25. Thesystem of claim 23 wherein the system implements a plurality of botscomprising software applications that run automated scripts over theInternet that automate software development.
 26. The system of claim 23wherein the system is configured to include a project management toolthat is configured to machine-assist project scheduling for developmentof the custom application and implement a software developmentmanagement process.
 27. The system of claim 23 wherein the system isconfigured to include a project builder that is configured to passexisting and new code requirements to a team selector process.
 28. Thesystem of claim 23 wherein the system is configured to assign sourcecode from a code library to a new project repository and triggers codetransfer to the new project repository
 29. The system of claim 23wherein the system is configured to allow users to interact withwebpages to design a custom software application by being configured todisplay an interactive web pages that present a group of different typesof software applications to select from to be a base for the desiredcustom application.
 30. The system of claim 23 wherein the system isconfigured to display a group of different types of softwareapplications comprising a social and photo centric type, a crowd sourcedcontent type, leveraging simple device capabilities type, orlocation-based type.
 31. The system of claim 23 wherein the system isconfigured to allows the user to select the one or more types ofoperating system for which the desired customer application isdeveloped.
 32. The system of claim 23 wherein the system is configuredto machine-assist the user to design the desired customer softwareapplication by displaying a series of interactive menu options fromwhich the user selects an application type, operating systems, builddepth, and other customizations.
 33. The system of claim 23 wherein thesystem is configured to allow users to interact with webpages to designa custom software application by being configured to display aninteractive web page that presents a group of different build depth toselect from the development of the desired custom application.
 34. Thesystem of claim 33 wherein the system is configured to allow the user topresent an interactive webpage that display options for build depthcomprising, wireframe depth, clickable user demo depth, core feature tobeta test depth, and complete app for launch depth.
 35. The system ofclaim 23 wherein the system is configured, in response to usersselection from interactive webpages for designing the desired customapplication, display the build card comprising a summary of the usersinteractive selection and a generated price for the desired customapplication in accordance with the summary.